import pymysql

# 创建数据库连接
conn = pymysql.connect(
    host="192.168.126.179",
    user="root",
    password="123456",
    port=3306,
    db="product_db"
)

# 获取游标对象
cursor = conn.cursor()

# 1. 添加商品的函数封装
def add_product(pro_name, pro_price, pro_stock):
    # 检查商品是否已经存在
    if pro_name in pro_info:
        return False, "商品已存在"

    # 插入到数据库
    try:
        sql = "INSERT INTO product (pro_name, pro_price, pro_stock) VALUES (%s, %s, %s)"
        cursor.execute(sql, (pro_name, pro_price, pro_stock))
        conn.commit()  # 提交事务
        # 更新内存中的字典
        pro_info[pro_name] = {"pro_price": pro_price, "pro_stock": pro_stock}
        return True, "商品添加成功"
    except pymysql.err.IntegrityError:
        conn.rollback()  # 回滚事务
        return False, "商品已存在，无法重复添加"
    except Exception as e:
        conn.rollback()
        return False, f"添加商品失败：{e}"

# 2. 查看商品的函数封装
def view_product(pro_name):
    # 从数据库查询商品信息
    sql = "SELECT pro_price, pro_stock FROM products WHERE pro_name = %s"
    cursor.execute(sql, (pro_name,))
    result = cursor.fetchone()
    if result:
        pro_price, pro_stock = result
        return True, f"商品 {pro_name} 的信息：价格 {pro_price}，库存 {pro_stock}"
    else:
        return False, "商品不存在！"

# 3. 删除商品的函数封装
def delete_product(pro_name):
    # 从数据库删除商品
    sql = "DELETE FROM products WHERE pro_name = %s"
    cursor.execute(sql, (pro_name,))
    if cursor.rowcount > 0:  # 如果有受影响的行
        conn.commit()
        # 从内存中删除
        del pro_info[pro_name]
        return True, f"商品 {pro_name} 已被删除！"
    else:
        conn.rollback()
        return False, "商品不存在！"

# 4. 修改商品的函数封装
def modify_product(pro_name, pro_price, pro_stock):
    # 更新数据库中的商品信息
    sql = "UPDATE products SET pro_price = %s, pro_stock = %s WHERE pro_name = %s"
    cursor.execute(sql, (pro_price, pro_stock, pro_name))
    if cursor.rowcount > 0:  # 如果有受影响的行
        conn.commit()
        # 更新内存中的字典
        pro_info[pro_name] = {"pro_price": pro_price, "pro_stock": pro_stock}
        return True, f"商品 {pro_name} 的信息已更新！"
    else:
        conn.rollback()
        return False, "商品不存在！"

# 初始化商品信息字典
pro_info = {}

# 主循环
while True:
    choice = input("请输入你的选择（1-添加，2-查看，3-删除，4-修改，5-退出）：")

    if choice == "1":  # 添加商品
        pro_name = input("请输入商品的名字：")
        pro_price = float(input("请输入商品的价格："))
        pro_stock = int(input("请输入商品的库存："))
        status, message = add_product(pro_name, pro_price, pro_stock)
        print(message)

    elif choice == "2":  # 查看商品
        pro_name = input("请输入要查看的商品名字：")
        status, message = view_product(pro_name)
        print(message)

    elif choice == "3":  # 删除商品
        pro_name = input("请输入要删除的商品名字：")
        status, message = delete_product(pro_name)
        print(message)

    elif choice == "4":  # 修改商品
        pro_name = input("请输入要修改的商品名字：")
        pro_price = float(input("请输入新的价格："))
        pro_stock = int(input("请输入新的库存："))
        status, message = modify_product(pro_name, pro_price, pro_stock)
        print(message)

    elif choice == "5":  # 退出
        break

    else:
        print("无效的选择，请重新输入！")

# 关闭数据库连接
cursor.close()
conn.close()